import os
import wx
import random


class MyFrame(wx.Frame):
    def __init__(self):
        super().__init__(None, title='抽奖器', size=(400, 600))
        self.pl = wx.Panel(self)
        self.pl.SetBackgroundColour((0, 132, 207))

        # 获取脚本所在目录的绝对路径
        self.script_dir = os.path.dirname(os.path.abspath(__file__))

        # 创建静态文本
        self.staticText = wx.StaticText(self.pl, label="点击开始", pos=(0, 50), size=(400, 100), style=wx.ALIGN_CENTRE)
        font = wx.Font(48, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)
        self.staticText.SetFont(font)

        # 创建图片控件
        default_img_path = os.path.join(self.script_dir, 'default.png')
        self.imageCtrl = wx.StaticBitmap(self.pl, bitmap=wx.Bitmap(default_img_path), pos=(100, 150), size=(200, 200))

        # 创建按钮
        self.btn1 = wx.Button(self.pl, label='开始抽奖', pos=(100, 400))
        self.btn2 = wx.Button(self.pl, label='结束抽奖', pos=(200, 400))
        self.btn1.SetBackgroundColour((141, 194, 31))

        # 绑定事件
        self.Bind(wx.EVT_BUTTON, self.onClick, self.btn1)
        self.Bind(wx.EVT_BUTTON, self.stop, self.btn2)

    def update_name(self, event):
        name = random.choice(['user1', 'user2', 'user3'])
        self.staticText.SetLabelText(name)

        # 构建图片路径
        img_path = os.path.join(self.script_dir, f"{name}.png")

        # 尝试加载图片并显示
        try:
            if os.path.exists(img_path):
                bitmap = wx.Bitmap(img_path)
                self.imageCtrl.SetBitmap(bitmap)
            else:
                # 图片不存在，显示默认图片
                default_img_path = os.path.join(self.script_dir, 'default.png')
                self.imageCtrl.SetBitmap(wx.Bitmap(default_img_path))
        except Exception as e:
            print(f"加载图片失败: {e}")
            # 显示错误信息
            self.staticText.SetLabelText(f"图片加载失败: {e}")

    def onClick(self, event):  # 抽奖
        self.timer = wx.Timer(self)  # 创建了一个定时器
        self.Bind(wx.EVT_TIMER, self.update_name, self.timer)
        self.timer.Start(100)  # 每隔100毫秒更新名字

    def stop(self, event):
        self.timer.Stop()  # 停止计时


if __name__ == "__main__":
    app = wx.App()
    frm = MyFrame()
    frm.Show()
    app.MainLoop()
